.NET 6 リリース概要まとめ
概要
去年(2021)年末に、 .NET 6 が公式発表されました。
ただいままだ既存 .NET 5 の環境で行っているプロジェクトはほどんとかも知れませんが、早いうちに .NET 6 にしようと考えている方は少なくないと思うので、自分も .NET 6 を勉強しなければならないので、勉強メモとしてブログを書きたいと思います。
何で .NET 6?
.NET 5 は普通にうまく使えるのに、.NET 6 に移行する必要はありますか?という疑問を持ってる方がたくさんいると思います。
リリースノートやネットで調べたところは、 .NET 6 に移行することは推奨されるし、そして恐らく早い段階 .NET 6 に移行しなければならないようです。
理由は
- .NET 5 は
2022年5月
にサポート終了となり、これからの約三年は .NET 6 のLTS(Long Term Support)になります - 多く新規機能が追加され、性能は大幅にアップしてます
- 各プラットフォームの開発は .NET 6 に統合されました
.NET 6 への移行方法
具体の参考リンク:
Migrate from ASP.NET Core 5.0 to 6.0
Migrate from ASP.NET Core 3.1 to 6.0
簡単でいうと、.NET 6.0 SDK
をインストールした上、下記の環境で開発を行うこと
- Visual Studio 2022 (Macの場合はVisual Studio 2022 for Mac)
- Visual Studio Code と C# for Visual Studio Code (最新バージョン)
開発環境を整えてから
global.json
にSDKのバージョンをアップする.csproj(project file)
にSDKのバージョンをアップする.csproj(project file)
でのパッケージ参照をアップする
それでプロジェクトのアップグレードができます。
.NET 6 アップデート概要まとめ
Performance (性能大幅アップ)
- FileStreamでのI/Oスピードが大幅向上、信頼性がよくなってます
- Profile-guided optimization(PGO)というコンパイル最適化が適用され、
Dynamic PGO
はDOTNET_TieredPGO
という環境変数でオンすることが可能 - Crossgen2が適用され、
ahead-of-time (AOT、事前コンパイラ)
でアプリの起動が早くなります。
Arm64 support
MacOS Arm64("Apple Silicon")とWindows Arm64システムが支援するようになりました
Hot Reload
コードを編集してから、アプリを再起動せずに変更されるものがアプリに反映されます。
.NET MAUI (統合されたUIフレームワーク)
正式リリースは年中予定されます。これから複数のプラットフォームのアプリUI開発は同じコードベースにすることが可能となります。
C# 10 と F# 6
C# 10とF# 6も発表されました。文法的な特性などが追加されてます。
SDK Workloads
.NETのSDKは今後もコンポーネント化する方向で、SDKのサイズを軽減するようにしています(必要なものだけをインストールする)。
System.Text.Json APIs
Json
処理を担っているライブラリは改善されました。
HTTP/3
プレビュー版ですが、QUIC
というプロトコルが追加され、独立性を持つ、より速い接続ができ、モバイルデバイスのネット環境を切り替えても中断されないようになってます。
OpenTelemetry
アプリの状態、性能などを監視できる機能が紹介されました。
Security
Open SSL3
を支援することになって、そして二つセキュリティ鍵の妨害防止方法がプレビュー機能として追加されました。
IL trimming / Code analysis
余計なコード削除や、コードのリスク、最適化分析などの機能が追加されてます。
Windows Forms
Application.SetDefaultFont(Font)
でデフォルトのフォントを指定できるようになりました。
Source build / Target framework monikers
ある協会が.NET SDK
を含めて自分SDKをビルドでき、そして特定のプラットフォームにターゲットすることも可能になっています。
Generic Math
generic type
でオペレイターを使いたい、static method
を定義したい方に向ける数学的にな機能がプレビュー版として追加されました。
NuGet package validation
NuGet
のパッケージ開発者に向けるパッケージ検査機能package-validation toolingが追加されました。
Reflection / Microsoft.Extensions / New LINQ APIs
Reflection、Microsoft.Extensions、LINQについて新規APIが追加されました。
Date, time, and time zone improvements
System.DateOnly
とSystem.TimeOnly
という構造体が追加され、時間表示などのAPIも改善されました。
PriorityQueue class
優先順位情報を保存しているコンテナが追加されました。
以上です。
参考リンク:
.NET and .NET Core Support Policy
Announcing .NET 6 — The Fastest .NET Yet